From: Mario Sanchez Prada Date: Wed, 10 May 2017 14:59:32 +0000 (+0100) Subject: texture-cache: Use image-missing image when no other icon was loaded X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~751^2^2~75 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3dd8ffc2bb1cefd603bcadabd8886dda3192dbd5;p=gnome-shell.git texture-cache: Use image-missing image when no other icon was loaded If a given icon is not available for neither the current theme nor any of the fallback options (default theme -"Adwaita", "gnome"...), the call to gtk_icon_theme_lookup_by_gicon() will return a NULL value, which returned by the Shell Toolkit as is, causing trouble in the Shell's JS code when calling shell_app_create_icon_texture() to create an icon. To at least mitigate the chances of this having this issue happening, we should at least try to load the standad 'image-missing' icon from the Icon Naming Specification spec when we receive a NULL here, so that at least we try to show something to the user, even if it's ugly. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1121 --- diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c index 850c0d697..adffafaba 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -34,6 +34,8 @@ #define CACHE_PREFIX_FILE "file:" #define CACHE_PREFIX_FILE_FOR_CAIRO "file-for-cairo:" +#define IMAGE_MISSING_ICON_NAME "image-missing" + struct _StTextureCachePrivate { GtkIconTheme *icon_theme; @@ -994,7 +996,15 @@ st_texture_cache_load_gicon (StTextureCache *cache, size, scale, lookup_flags); if (info == NULL) - return NULL; + { + /* Do not give up without even trying to pick the image-missing fallback icon. */ + info = gtk_icon_theme_lookup_icon_for_scale (theme, + IMAGE_MISSING_ICON_NAME, + size, scale, + GTK_ICON_LOOKUP_USE_BUILTIN); + if (info == NULL) + return NULL; + } gicon_string = g_icon_to_string (icon); /* A return value of NULL indicates that the icon can not be serialized,